#include "MessageHelper.h"
#include <QByteArrayList>

MSG MessageHelper::makeMessage(const QByteArray& recvbuf) {
    MSG msg;
    QByteArrayList list = recvbuf.split(' ');
    msg.setType(list[0]);
    msg.userId = list[1].toUShort();
    msg.data = list[2];

    return msg;
}

MSG MessageHelper::makeTextMessage(const QString& text) {
    MSG msg;
    msg.type = MSG::TEXT;
    msg.userId = 0;
    msg.data.append(text.toUtf8());
    return msg;
}

MSG MessageHelper::makeMediaMessage(const QByteArray& data, MSG::Type type, quint16 ip) {
    QByteArray vv = qCompress(data);
    //QByteArray vv = ss.toBase64();

    MSG msg;
    msg.type = type;
    msg.userId = ip;
    msg.data = vv;
    return msg;
}

static quint32 seq = 0;
QByteArray MessageHelper::makePingMessage() {
    return "0 " + QByteArray::number(seq++) + ' ' + QByteArray::number((uint)timeval().tv_usec);
}

QByteArray MessageHelper::readMessage(const MSG& msg) {
    QByteArray result;
    result.append(msg.getType());
    result.append(' ');
    result.append(QByteArray::number(msg.userId));
    result.append(' ');
    result.append(msg.data);
    return result;
}